// 获取项目根目录的工具：优先使用 process.cwd()，否则通过模板 API 推断
// 返回绝对路径字符串，如 'D:\\DeskTop\\sheng-sheng-bu-xi\\sheng-sheng-bu-xi-web'

function fromProcessCwd() {
  try {
    const proc = window.require ? window.require('process') : null
    if (proc && typeof proc.cwd === 'function') {
      return proc.cwd()
    }
  } catch (_) {
    console.error("获取项目根路径失败（process.cwd）:", _)
  }
  return null
}

async function fromTemplateAPI() {
  const api = window.electronTemplateAPI
  if (!api) return null
  try {
    const catsRes = await api.listCategories()
    const cats = (catsRes && catsRes.success && Array.isArray(catsRes.categories)) ? catsRes.categories : []
    for (const cat of cats) {
      const tRes = await api.listTemplates(cat)
      const names = (tRes && tRes.success && Array.isArray(tRes.templates)) ? tRes.templates : []
      if (!names.length) continue
      const pRes = await api.getTemplatePath(cat, names[0])
      const full = (pRes && pRes.success && typeof pRes.path === 'string') ? pRes.path : ''
      if (!full) continue
      // full: <projectRoot>/template/<cat>/<name>
      const lower = full.toLowerCase()
      let idx = lower.lastIndexOf('\\template\\')
      if (idx < 0) idx = lower.lastIndexOf('/template/')
      if (idx > 0) {
        return full.slice(0, idx)
      }
    }
  } catch (_) {
    console.error("获取项目根路径失败（模板 API）:", _)
  }
  return null
}

export async function getProjectRoot() {
  // 1) Node 集成：process.cwd()
  const byProc = fromProcessCwd()
  if (byProc) return byProc
  // 2) 通过模板 API 推断
  const byTpl = await fromTemplateAPI()
  if (byTpl) return byTpl
  // 3) 最终失败时返回空字符串
  return ''
}

export default { getProjectRoot }
